import { PDFDocument } from "pdf-lib"
/**
 *
 * @param {*} url
 * @param {*} config // 中雄机密文件禁止外传 + 名字 + 手机尾号，水印密度和企微差不多就可以
 * @returns
 */
export const addPDFWaterMark = async (url, config = { text: '8934', size: 20 }) => {
  // 获取文件的 arrayBuffer 流，获取路径可以前端本地项目文件，如果是脚手架，文件需要放在 public 目录下
  const { text, size } = config;
  // 也可以从后台获取返回的 base64 文件流
  const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())
  // 生成一个 pdf 文档对象
  const pdfDoc = await PDFDocument.load(existingPdfBytes)
  // const pdfDoc = await PDFLib.PDFDocument.load(existingPdfBytes)
  // console.log('existingPdfBytes=======>',existingPdfBytes,pdfDoc); ,parseSpeed:100,capNumbers:true
  if (!pdfDoc.isEncrypted) {
    // 生成 canvas 文字图片
    let canvas = document.createElement('canvas')
    const textBlockWidth = 200//size * (text.length + 1)
    const textBlockHeight = 250//size * 4
    // const textBlockWidth = size * (text.length + 1)
    // const textBlockHeight = size * 2
    canvas.width = textBlockWidth
    canvas.height = textBlockHeight
    const ctx = canvas.getContext('2d')
    ctx.fillStyle = 'rgba(24, 22, 22, 0.3)'
    ctx.font = `${size}px Microsoft Yahei`
    ctx.rotate(-20 * Math.PI / 180);
    ctx.fillText(text, 0, 60)
    ctx.fillText('中雄机密文件禁止外传', 0, 100)
    // ctx.fillText(text, size / 2, size)

    const png = canvas.toDataURL('img/png')
    const imagePDF = await pdfDoc.embedPng(png)


    // 获取所有的 pdf 页面
    const pages = pdfDoc.getPages()
    for (let i = 0; i < pages.length; i++) {
      const page = pages[i]
      const { height } = page.getSize()
      for (let i = 0; i < 10; i++) {
        for (let j = 0; j < 3; j++) {
          // page.drawText('watermark', {
          //     x: 200 * j,
          //     y: (height / 4) * i,
          //     size: 16,
          //     opacity: 0.3,
          // })

          page.drawImage(imagePDF, {
            x: 200 * j,
            y: (height / 3) * i,
            opacity: 0.5,
          })
        }
      }
    }
    // 生成 unit64Arrary文件流
    const pdfBytes = await pdfDoc.save();
    let blobData = new Blob([pdfBytes], { type: "application/pdf;Base64" });

    // 返回一个新的 url 链接
    const tempurl = window.URL.createObjectURL(blobData);
    return tempurl
  }
  return url
}

// https://blog.csdn.net/Ljwen_/article/details/127876863
